#!/usr/bin/perl -w

#-----------------------------------------------------Alexandru Polevoi--------
use XML::LibXSLT;
use XML::LibXML;
use CGI;
use CGI::Carp qw(fatalsToBrowser);


#-----------ricevimento id film-----------------
$input=$ENV{'QUERY_STRING'};
@array=split(/&/,$input);
@array2=split(/=/,$array[0]);
@array3=split(/=/,$array[1]);
$id_film=$array2[1];
$operazione=$array3[1];


#imposto i path del file dati e della trasformata
my $fileDati="../public_html/database.xml";
my $trasformata="../public_html/film_scheda.xslt";

#creo il parser
my $parser = XML::LibXML->new();
#creo l'oggetto per la trasformata
my $xslt = XML::LibXSLT->new();

#parser dei due documenti
my $doc = $parser->parse_file($fileDati);
my $xslt_doc = $parser->parse_file($trasformata);

#creazione del foglio di trasformazione
my $stylesheet = $xslt->parse_stylesheet($xslt_doc);

#applicazione del foglio di trasformazione
my $risultato = $stylesheet->transform($doc);

#serializzazione
my $nuovaPagina = $risultato->toString;




#modifica ai link:variabili per modificare i path
#vecchi path
my $srcPath = "src=\"images/";
my $hrefPath = "href=\"css/";
#nuovi 
my $newSRC = "src=\"../images/";
my $newHREF = "noref=\"../css/";

#preservo i link assoluti 
#noref serve per fare in modo che non vengano applicate le regole successive
$nuovaPagina =~ s/href=\"http/hnoref=\"http/g; 
#preservo i link alla stessa pagina
$nuovaPagina =~ s/href=\"#/hnoref=\"#/g; 
#preservo i link che tornano indietro con ..
$nuovaPagina =~ s/href=\"..\//hnoref=\"..\//g;
  
#modifica dei path dei link e css
$nuovaPagina =~ s/$hrefPath/$newHREF/g; 
#modifica dei path di immagini e script (src)
$nuovaPagina =~ s/$srcPath/$newSRC/g; 
   
#rimetto a posto i link che tornano indietro con ..
$nuovaPagina =~ s/hnoref=\"..\//href=\"..\//g;
$nuovaPagina =~ s/$hrefPath/$newHREF/g; 
    
#rimetto a posto i link preservati
$nuovaPagina =~ s/hnoref=\"/href=\"/g;  
$nuovaPagina =~ s/noref=\"/href=\"/g;

$codice="";
#autenticazione
$q=new CGI;
$id_utente= $q->cookie(-name=>'loginId');

if($id_utente){
	if($operazione==1)
	{	
		$content=new CGI;
		$contenuto=$content->param("contenuto");

		if($contenuto ne "")
		{
			$exist="";
			$testQuery="//x:commenti/x:commento[x:contenuto=\'$contenuto\' and x:utente/\@id=$id_utente and x:film/\@id=$id_film]/\@id";
			$exist.=$doc->findnodes($testQuery);

			if($exist eq "")
			{
				$query="//x:commenti/x:commento[position()=last()]/\@id";
				$id_commento=$doc->findnodes($query);
				$id_commento=int($id_commento);
				$id_commento++;

				my $radice=$doc->getDocumentElement;
				my @biglietti_occ=$radice->getElementsByTagName('x:commenti');
					$nuovo_el=<<END;
			<x:commento id=\"$id_commento\" xmlns:x="http://www.cinema-pandora.it/">
				<x:contenuto>$contenuto</x:contenuto>
				<x:film id=\"$id_film\"/>
				<x:utente id=\"$id_utente\"/>
			</x:commento>
END
					$frammento=$parser->parse_balanced_chunk($nuovo_el);
					$biglietti_occ[0]->appendChild($frammento);
					open OUT, ">../public_html/database.xml";
					print OUT $doc->toString;
					close OUT;
			}
		}
	}
}
#--------------------------Query---------------------------------
$query="//x:films/x:film[\@id=$id_film]/\@titolo";
$titolo=$doc->findnodes($query);

$query1="//x:films/x:film[\@id=$id_film]/x:immagine/\@file";
$immagine=$doc->findnodes($query1);

$query2="//x:films/x:film[\@id=$id_film]/x:immagine/\@identificativo";
$identificativo=$doc->findnodes($query2);

$query3="//x:films/x:film[\@id=$id_film]/x:immagine/\@alt";
$alt=$doc->findnodes($query3);

$query4="//x:films/x:film[\@id=$id_film]/x:trama";
$trama=$doc->findnodes($query4);

$query5="//x:films/x:film[\@id=$id_film]/x:regista";
$diretto=$doc->findnodes($query5);

$query6="//x:films/x:film[\@id=$id_film]/x:attori";
$attori=$doc->findnodes($query6);

$query7="//x:films/x:film[\@id=$id_film]/x:durata";
$durata=$doc->findnodes($query7);

$query8="//x:commenti/x:commento[x:film/\@id=$id_film]/\@id";
@commenti=$doc->findnodes($query8);
#----------------------------------------------------------------

$codice.="<div><div class=\"corpo_titolo\">$titolo</div>
		<div class=\"corpo_foto\"><img src=\"../$immagine\" class=\"$identificativo\" alt=\"$alt\"/></div>
		<div class=\"corpo_contenuto\">
			   <dl>
				<dt>Trama:</dt>
					<dd>$trama</dd>
				<dt>Diretto da:</dt>
					<dd>$diretto</dd>
				<dt>Attori principali:</dt>
					<dd>$attori</dd>
				<dt>Durata (minuti):</dt>
					<dd>$durata</dd>
					<dd><a href=\"prenotazione_inserisci.cgi?id=$id_film\">Prenota</a></dd>
			   </dl>
		</div></div>";

$codice.="<div id=\"commenti\"><div style=\"background-color:#BBBBBB; color:#000000; padding:0.5em; font-size:1.5em;\">Commenti:</div>";
if($id_utente){
	$codice.="<div><form action=\"film_scheda.cgi?id=$id_film\&operation=1\" method=\"post\"><textarea id=\"text\" name=\"contenuto\"></textarea><input id=\"inpt\" type=\"submit\" value=\"Inserisci Commento\"></form></div>";
}

$num_commenti=@commenti;
if($num_commenti!=0)
{
	$codice.="<dl style=\"padding-left:4em;\">";
	$max=10;
	for($i=@commenti; $i>0; $i--)
	{
		if($max>0)
		{
			$id_commento=$commenti[$i-1]->textContent;
			#---------------query---------------------
			$query9="//x:utenti/x:utente[\@id=//x:commenti/x:commento[\@id=$id_commento]/x:utente/\@id]/x:nome";
			$user_nome=$doc->findnodes($query9);
	
			$query10="//x:utenti/x:utente[\@id=//x:commenti/x:commento[\@id=$id_commento]/x:utente/\@id]/x:cognome";
			$user_cognome=$doc->findnodes($query10);

			$query11="//x:commenti/x:commento[\@id=$id_commento]/x:contenuto";
			$contenuto=$doc->findnodes($query11);
			#---------------fine query----------------
	
			$codice.="<dt>$user_nome $user_cognome</dt><dd>$contenuto.</dd>";
			$max--;
		}
	}
	$codice.="</dl></div>";
}
else
{
	$codice.="<strong>Non sono ancora stati inseriti commenti per questo film.</strong>";
}

$nuovaPagina =~ s/CODICE_CGI/$codice/g;	

use CGI::Cookie;
my $menuregpro = 'Registrazione';
my $menuregprof = 'registrazione';
%cookies = CGI::Cookie->fetch;
my $loginId = $cookies{'loginId'};
if($loginId) {
 $loginId = $loginId->value;
 }
if($loginId) {
 $nuovaPagina =~ s/LOGIN-FORM-BEGIN(.|\n)*?LOGIN-FORM-END//g;
 $nuovaPagina =~ s/LOGOUT-FORM-BEGIN//g;
 $nuovaPagina =~ s/LOGOUT-FORM-END//g;
 $menuregpro = 'Profilo';
 $menuregprof = 'profilo';
 my @utenti = $doc->findnodes("//x:utenti/x:utente[\@id=$loginId]");
 $loginName = $utenti[0]->findvalue('x:nome');
 $loginSurname = $utenti[0]->findvalue('x:cognome');
 $nuovaPagina =~ s/LOGIN-NAME/$loginName $loginSurname/g;
 $nuovaPagina =~ s/DOC-FROM/home/g;    ##### modificare 'home' con il nome del file
 }
else {
 $nuovaPagina =~ s/LOGIN-FORM-BEGIN//g;
 $nuovaPagina =~ s/LOGIN-FORM-END//g;
 $nuovaPagina =~ s/LOGOUT-FORM-BEGIN(.|\n)*?LOGOUT-FORM-END//g;
}
$nuovaPagina =~ s/MENU-REG-PRO-FILE/$menuregprof/g;
$nuovaPagina =~ s/MENU-REG-PRO/$menuregpro/g;
my $logErr = $cookies{'loginError'};
if($logErr && $logErr->value){
 $nuovaPagina =~ s/LOGIN-ERROR/1/g; #login errato?
 $cookie = CGI::Cookie->new(-name=>'loginError', -value=>0);
 print "Set-Cookie: $cookie\n";
 }
$nuovaPagina =~ s/BEGIN-COMMENT/<!--/g; #inizio commento
$nuovaPagina =~ s/END-COMMENT/-->/g; #fine commento
		

#invio della pagina al browser
print "Content-Type: text/html\n";
print "Content-Encoding: utf8\n\n";
  
print $nuovaPagina;
#-----------------------------------------------------/Valentino Furlan--------
